package Day18.IO.TryCatch;

/**
 * @version 1.0
 * @BelongsProject:IntelliJ IDEA
 * @BelongsPackage:Day18.IO.Writer
 * @Author:hyhWTX
 * @ClassName:Demo01TryCatch
 * @CreateTime:2022年-09月-17日 20:58
 * @Description: IO异常处理
 */

import java.io.FileWriter;
import java.io.IOException;

/**
 *在jdk1.7之前使用try catch finally处理流中的异常
 * 格式:
 *      try{
 *          可能会产出异常的代码
 *       }catch(异常类变巢变量名){
 *              异常的处理逻辑
 *       }finally{
 *         一定会指定的代码
 *         资源释放
 *      }
 */

public class Demo01TryCatch {
    public static void main(String[] args)  {
        //提高变量的fw的作用域，让finally可以使用
        //变量定义的时候，可以没有值，但是使用的时候必须有值

        FileWriter fw = null;
        try {
            //可能出现异常的代码
            fw = new FileWriter("09_IOAndProperties\\e.txt");
            for (int i = 0; i < 10; i++) {
                fw.write("hello world" + i + "\r\n");
            }
        }catch (IOException e){
            //异常的处理逻辑
            System.out.println(e);

        }finally {

            //一定要执行的代码,关闭资源
            //创建对象失败了，fw的默认值就是null，null是不能调用方法的，会抛出NullPointerException，需要增加一个判断，不是null再把资源释放
            if (fw != null) {
                try {
                    //fw.close() 方法声明了跑出来IOException异常对象，所以我们就需要处理这个异常对象，一是throw，二是使用try catch
                    fw.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }

    }
}
